load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
load("//misc/bazel:pkg.bzl", "codeql_pkg_files", "codeql_pkg_runfiles")
load("//swift:rules.bzl", "swift_cc_binary")

swift_cc_binary(
    name = "extractor.real",
    srcs = glob([
        "*.h",
        "*.cpp",
    ]),
    linkopts = select({
        "@platforms//os:macos": ["-headerpad_max_install_names"],
        "//conditions:default": [],
    }),
    visibility = ["//swift:__pkg__"],
    deps = [
        "//swift/extractor/config",
        "//swift/extractor/infra",
        "//swift/extractor/invocation",
        "//swift/extractor/remapping",
        "//swift/extractor/translators",
        "//swift/third_party/resources:prebuilt",
        "@absl//absl/strings",
    ],
)

sh_binary(
    name = "extractor",
    srcs = ["extractor.sh"],
    data = [":extractor.real"],
)

codeql_pkg_runfiles(
    name = "pkg",
    excludes = ["extractor.sh"],  # script gets copied as "extractor", no need for the original .sh file
    exes = [":extractor"],
    visibility = ["//swift:__pkg__"],
)

codeql_pkg_files(
    name = "incompatible",
    exes = ["incompatible-extractor.sh"],
    renames = {"incompatible-extractor.sh": "extractor"},
    target_compatible_with = ["@platforms//os:linux"],
    visibility = ["//swift:__pkg__"],
)
